As it is generally known, in the area of software application program design, an application platform is a collection of application program interfaces and/or protocols on which applications can be developed. It is desirable for an application program platform to be extensible, so that the functionality of application programs using the platform can be dynamically extended at run time. Extensibility in this area has many potential advantages, including reduced cost of implementing new functions, reduced overall complexity, reduced overall code size, increased number of use cases supported, reduced development and testing costs, reduced installation costs, increased modularity, convenient delivery of new features, better reuse of components, and others.
The Eclipse Foundation (www.eclipse.org) has developed a simple yet powerful and flexible extensibility framework around its plug-in component model. In the Eclipse model, a plug-in can define one or more extension points and/or one or more extensions. An extension point can, in theory, have an unlimited number of extensions attached. An extension point can potentially call and request a service from all or some of the extensions that are attached to it. However, a shortcoming of the Eclipse model is apparent in the case where an application defines an extension point and needs to process extensions attached to the extension point selectively. For example, an application generating a “tabbed” user interface, presenting multiple folder tab display objects in the user interface, may need to show only certain appropriate tabs within a current execution context, based on context attributes such as the specific user, software license, configuration or setup values, current state, etc. In such a situation, using previous systems, the extension point sees all attached extensions representing tabs for display, but must be selective in processing them. As a result, the extension point program code must process if-then-else statements or the like with regard to current context variables before deciding which extensions to call and render, causing the main code (i.e. loop) of the extension point to become complex and difficult to manage.
For these reasons and others, it would be desirable to have a new extensible application program platform that defines mechanisms for extending the functionality of a computer software application program at run time, that improves the ability of Eclipse type extension points to efficiently handle large numbers of attached extensions.